home *** CD-ROM | disk | FTP | other *** search
/ Joystick Magazine 1996 May / cd joy 71No13.iso / pc / demos / eurosoc / source / gdv.h < prev    next >
Text File  |  1995-09-18  |  4KB  |  168 lines

  1. //
  2. //    GDV.H
  3. //
  4. //    Structures/types/defines for compresser and player
  5. //
  6. // Versions 3 and 4 (8 and 15 bit colour)
  7. //
  8.  
  9. // Audio/Video data types
  10. #define NO_SOUND             0
  11. #define A_STANDARD_SOUND (1<<0)
  12. #define A_STEREO         (1<<1)
  13. #define A_16_BIT         (1<<2)
  14. #define A_COMPRESSED     (1<<3)
  15.  
  16. #define NO_VIDEO             0
  17. #define V_256_VIDEO      (1<<0)
  18. #define V_32K_VIDEO      (1<<1)
  19.  
  20. // Sound and video parameters
  21. #define SOUNDSIZE  (sample_rate/fps) 
  22. #define FRAMESIZE  (videosize+SOUNDSIZE)
  23.  
  24. // Filenames
  25. #define CONFIG_FILE     "config.ini" // } Unless overridden by env. var.
  26. #define SOS_PATH        ".\\"        // } settings
  27. #define file_type       "gdv"
  28. #define VERSION         "4.0"
  29.  
  30. // Frame types within animation file
  31. #define FRM_PALETTE        0 // New palette only (used for fades)
  32. #define FRM_JOINER         1 // Blank screen
  33. #define FRM_DELTA1         2 // Complete frame differences from last frame
  34. #define FRM_HOLD              3 // Hold frame; Do nothing.
  35. #define FRM_PALETTE_DELTA1 4 // New palette and frame data (in that order)
  36.  
  37. // Token types within packed data
  38. #define TKN_PIXEL     0             // 16 bit colour value (No match possible)
  39. #define TKN_STRING    1             // 16 bit string (position and length) 
  40. #define TKN_SAME8     2             // 8 bit 'no change' length
  41. #define TKN_END       3             // Token signifying end of frame or block
  42.  
  43. // Standard VGA screen stats
  44. #define VGA_256        0x13
  45. #define VGA_256_WIDTH  320
  46. #define VGA_256_HEIGHT 200
  47. #define VGA_256_BANKS  1
  48.  
  49. // Super VGA mode 101h stats
  50. #define SVGA_256        0x101
  51. #define SVGA_256_WIDTH  640
  52. #define SVGA_256_HEIGHT 480
  53. #define SVGA_256_BANKS  5
  54.  
  55. // Super VGA mode 110h stats
  56. #define SVGA_32K        0x110
  57. #define SVGA_32K_WIDTH  640
  58. #define SVGA_32K_HEIGHT 480
  59. #define SVGA_32K_BANKS  10
  60.  
  61. #ifdef VGA_SCREEN
  62. #undef VGA_SCREEN
  63. #define VGA_SCREEN   (unsigned short *)0xa0000
  64. #endif
  65.  
  66. // Compression stuff
  67. #define DICT_BITS     12
  68. #define BUFF_BITS     4
  69. #define DICT_SIZE  (1<<DICT_BITS)
  70. #define BUFF_SIZE  (1<<BUFF_BITS)
  71. #define TOTAL_SIZE (DICT_SIZE+BUFF_SIZE)
  72.  
  73. // Magic numbers for headers
  74. #define FRM_MAGIC    0x1305
  75. #define GDV_MAGIC    0x29111994
  76.  
  77. // gl_shutdown error codes
  78. #define GL_READ_ERROR  1<<0
  79. #define GL_MAGIC_ERROR 1<<1
  80. #define GL_FRAME_ERROR 1<<2
  81. #define GL_TOKEN_ERROR 1<<3
  82. #define GL_STOPPED     1<<4
  83.  
  84. // Main header for animation file [24 bytes]
  85. struct gdv_header
  86. {
  87.     unsigned long magic;                         // Magic number for GDV files
  88.    unsigned short dimensions;                   // Image dimension code
  89.     unsigned short no_frames;                    // Total number of frames
  90.     unsigned short fps;                          // Frames per second 
  91.     unsigned short audio_type;                   // Type of audio data 
  92.     unsigned short sample_rate;                  // Sound sample rate
  93.     unsigned short video_type;                   // Type of video data 
  94.     unsigned short video_size;                   // (Max.) Size of video/frame
  95.     unsigned char version;                       // Version number
  96.    unsigned char lossyness;                     // Quality
  97.    unsigned char reserved[4];                   // For later...       UNUSED
  98. };
  99.  
  100. // Header for each frame of the animation [8 bytes]
  101. struct frame_header
  102. {
  103.     unsigned short magic;                                // Magic frame number
  104.     unsigned short    frame_size;                            // Size of DATA in bytes
  105.     unsigned char type;                          // Type of frame
  106.     unsigned char reserved[3];                            // For later              UNUSED
  107. };
  108.  
  109. #define GAMMA_CORRECT 1.4
  110.  
  111. #define DIMENSIONS 32
  112. #define MAX_256    16
  113.                     
  114. #ifdef CGDV
  115. #ifndef GLOBAL
  116. unsigned short widths[DIMENSIONS]=
  117. {
  118.    320,
  119.    640,
  120.    320,
  121.    320,
  122.    320,
  123.    320,
  124.    160,
  125.    160,
  126.    160,
  127.     280,
  128.     320,
  129.    320,
  130.     0,0,0,0,
  131.    640,
  132.    640,
  133.    640,
  134.    640,
  135.    640,
  136.    320,
  137.     0,0,0,0,0,0,0,0,0,0
  138. };
  139.  
  140. unsigned short heights[DIMENSIONS]=
  141. {
  142.    200,
  143.    200,
  144.    167,
  145.    180,
  146.    400,
  147.    170,
  148.    85,
  149.    83,
  150.    90,
  151.     128,
  152.    240,
  153.     201,
  154.     0,0,0,0,
  155.    400,
  156.    200,
  157.    180,
  158.    167,
  159.    170,
  160.    240,
  161.     0,0,0,0,0,0,0,0,0,0
  162. };
  163. #else
  164. extern unsigned short widths[],heights[];
  165. #endif
  166. #endif
  167.    
  168.